#include <stdio.h>
int main(){
    void change(int *p);
    int a[5][5],*p,i,j;
    printf("please input matrix:\n");
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
            scanf("%d",&a[i][j]);
    p=&a[0][0];
    change(p);
    printf("the matrix after change:\n");
    for(i=0;i<5;i++){
        for(j=0;j<5;j++)
            printf("%5d", a[i][j]);
        printf("\n");
    }
    return 0;
}
void change(int *p){
    int i,j,temp;
    int*max,*min;
    max=min=p;
    for(i=0;i<5;i++)
     for(j=0;j<5;j++){
        if(*max<*(p+i*5+j))
            max=p+i*5+j;
        if(*min>*(p+i*5+j))
            min=p+i*5+j;
    }
    temp=*(p+12);//最大值给中心元素
    *(p+12)=*(max);
    *(max)=temp;
    temp=*p; //第一个最小值
    *p=*min;
    *min=temp;
    for(i=0;i<5;i++){
        for(j=0;j<5;j++)
           if(((p+5*i+j)!=p)&&(*min>*(p+5*i+j)))
           min=p+5*i+j;
     }
     temp=*min;//第二个最小值
     *min=*(p+4);
     *(p+4)=temp;
     min=p+1;
     for(i=0;i<5;i++){
        for(j=0;j<5;j++)
           if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*min>*(p+5*i+j)))
           min=p+5*i+j;
     }
     temp=*min;//第三个最小值
     *min=*(p+20);
     *(p+20)=temp;
for(i=0;i<5;i++){
        for(j=0;j<5;j++)
           if(((p+5*i+j)!=(p+20))&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*min>*(p+5*i+j)))
           min=p+5*i+j;
     }
     temp=*min;//第四个最小值
     *min=*(p+24);
     *(p+24)=temp;
}
